package ejemploPrueba.client;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
//import com.google.gwt.user.client.Window;
//import com.google.gwt.user.client.ui.Button;
//import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;

public class ABML_Producto implements EntryPoint {
	private VerticalPanel vPanel;
	private Label lblNombre;// new Label("Nombre: ");
	private TextBox txtNombre;// = new TextBox();
	private Label lblCosto;
	private TextBox txtCosto;
	private Label lblStock;
	
	private TextBox txtStock;
	private Button btnGuardar;
	private int i=0;
	
	// Componente tipo tabla que nos permite agregar componentes
	// le decimos el numero de filas y de columnas que va a tener
	private Grid gridPrincipal = new Grid(6, 3);
	private Grid gridTabla = new Grid(1, 1);
	// Tabla principal
	private FlexTable tablaProductos = new FlexTable();
	// Array con datos
	private ArrayList<Producto> ListaProductos = new ArrayList<Producto>();
	private Producto p = new Producto();
	int contador;
	//Indice para saber si se esta editando
	//private int indiceEditar = -1;
	//Codigo del alumno que registro
	//private int codigo=1;
		
	@Override
	public void onModuleLoad() {
		// TODO Auto-generated method stub
		vPanel= new VerticalPanel();
		
		
		lblNombre= new Label("Nombre: ");
		txtNombre=new TextBox();
		lblCosto=new Label("Costo: ");
		txtCosto = new TextBox();
		lblStock=new Label("Stock: ");
		txtStock=new TextBox();
		btnGuardar=new Button("Guardar");
		btnGuardar.addClickHandler(new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent event) {
				// TODO Auto-generated method stub
				agregarProductos();
				limpiar();
			}
		});
		
		this.tablaProductos.setText(0, 0, "Codigo");
		this.tablaProductos.setText(0, 4, "Nombre");
		this.tablaProductos.setText(0, 8, "Costo");
		this.tablaProductos.setText(0, 12, "Stock");
		
		// Fila del Nombre
		
		 this.gridPrincipal.setWidget(0, 0, this.lblNombre);
		 this.gridPrincipal.setWidget(0, 1, this.txtNombre);
		 
		 // Fila del Apellido
		 
		 this.gridPrincipal.setWidget(1, 0, this.lblCosto);
		 this.gridPrincipal.setWidget(1, 1, this.txtCosto);
		 
		 // Fila de la Facultad
		 
		 this.gridPrincipal.setWidget(2, 0, this.lblStock);
		 this.gridPrincipal.setWidget(2, 1, this.txtStock);
		 
		 this.gridPrincipal.setWidget(3, 1, this.btnGuardar);
		 
		 this.gridTabla.setBorderWidth(1);
		 this.gridTabla.setWidth("250px");
		 
		 this.gridTabla.setWidget(0, 0, this.tablaProductos);
		 
		 this.vPanel.add(this.gridPrincipal);
		 this.vPanel.add(this.gridTabla);
		 RootPanel.get().add(vPanel);	
		
	}
	
	private void limpiar(){
		this.txtCosto.setText("");
		this.txtNombre.setText("");
		this.txtStock.setText("");
	}
	private void agregar(Producto p){
		ListaProductos.add(p);
	}
	private void borrar(Producto p){
		ListaProductos.remove(p);
	}
	 public void listarFichero(){
	        Iterator<Producto> it = ListaProductos.iterator();
	        while(it.hasNext()){
	        	System.out.print(it.next().getCodigo() +" ");
	            System.out.print(it.next().getNombre() +" ");
	            System.out.print(it.next().getCosto() +" ");
	            System.out.println(it.next().getStock() +" ");
	        }
	 }
	public int agregarProductos(){
		
		String nombre = txtNombre.getText().trim();
		String cost= txtCosto.getText().trim();
		int costo=Integer.parseInt(cost.trim());
		String s= txtStock.getText().trim();
		int stock = Integer.parseInt(s.trim());
		p = new Producto(i,nombre,costo,stock);
		ListaProductos.add(i,p);
		//String.valueOf(numEntero)
		this.tablaProductos.setText(i+1, 0, String.valueOf(p.getCodigo()));
		this.tablaProductos.setText(i+1, 4 , p.getNombre());
		this.tablaProductos.setText(i+1, 8, String.valueOf(p.getCosto()));
		this.tablaProductos.setText(i+1,12, String.valueOf(p.getStock()));
		i++;
		return i;
	}
	
}
